Notes sur la sémantique des langages de programmation

La sémantique (le sens) d'un langages de programmation est définie en termes de la sémantique de ces constructions nonterminaux. Par exemple, le sens d'une définition de constante (dans un programme) est la valeur de la constante, le sens de la définition d'un type de données est normalement l'ensemble des valeurs possibles qui appartiennent au type, le sens d'une expression est la valeur de l'expression et le sens d'un énoncé est l'effet que l'exécution de cet énoncé a sur les valeurs de variables stockées en mémoire.

Certaines propriétés sémantique peuvent être évaluées lors de la compilation; elles sont appelées la "sémantique statique". Par exemple, dans un langage avec typage, le type de la valeur d'une expression peut être évalué par le compilateur, mais la valeur de l'expression dépend normalement de valeurs de variables qui sont connues seulement pendant la phase d'exécution.

La sémantique statique est souvent représentée par des attributs sémantiques qui sont associés aux nonterminaux. (Les attributs seront évalués par le compilateur et seront associés aux noeuds nonterminaux de l'arbre syntaxique qui a été construit par le compilateur). Par exemple, chaque noeud <expression> dans l'arbre syntaxique pourrait avoir un attribut, appelé "type", qui contient comme valeur le type de l'expression. Pour plus de détails, voir le livre de Sebesta, section 3.5.

Il existent différentes méthodes pour la définition de la sémantique dynamique des langages de programmation. Ces méthodes peuvent être classifiées dans les catégories suivantes:

Un exemple: Définitions de la sémantique des expressions régulières